<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script>
    // function Man(name,age){
    //    this.name = name;
    //    this.age = age;
    // }
    // let x = new Man("张三",20);
    // alert(x.name+"   "+x.age);

    // class Man{
    //    constructor(name,age) {//构造方法
    //      this.name = name;
    //      this.age = age;
    //    }
    //    speak(){//普通方法
    //      alert("说话");
    //    }
    //
    //    static sleep(){//静态方法
    //      alert("睡觉");
    //    }
    //
    //    toString(){//定义toString方法后，打印对象，会调用该方法。类似于java中的toString()
    //      return "name="+this.name+"   age="+this.age;
    //    }
    // }
    // let m = new Man("张三",20);
    // alert(m);
    // m.speak();
    // Man.sleep();

    // //数组克隆
    // let array1 = [{code:"1",name:"tom"},{code:"2",name:"rose"}];
    // //浅度克隆，array1和array2是不同的数组，但是数组元素引用同一个对象
    // // let array2 = [...array1];
    // //深度克隆，array1和array2是不同的数组，数组元素引用不同的对象
    // let array2 = JSON.parse(JSON.stringify(array1));
    //
    // alert(JSON.stringify(array2));
    // alert(array1 == array2);
    // alert(array1[0] == array2[0]);

    //对象克隆
    // let obj = {code:"1",name:"tom"};
    // let o1 = {...obj};
    // alert(JSON.stringify(o1)+"   "+(obj == o1));

    // //速写属性
    // let dog = {name:"旺才",age:3};
    // //当属性名和属性值一致时，可以直接写属性名
    // let man = {name:"张三",dog};
    // alert(man.name+"  "+man.dog.name+"  "+man.dog.age);

     var name="007";
     var age = 20;
     var str = `姓名：${name}  年龄：${age}`;
     alert(str);
  </script>
</head>
<body>

</body>
</html>
